// 1. 导入axios工具代码
import axios from 'axios'
// 4. 导入userstore
import { useUserStore } from '@/stores/index'

import { Toast } from 'vant'

// 2. 生成设置axios的 根地址  和 超时时间  的代码
const request = axios.create({
  baseURL: 'https://apifoxmock.com/m1/4840030-4495188-default',
  timeout: 5000
})

// 3. 生成axios的   请求拦截器  和  响应拦截器
request.interceptors.request.use(
  (config) => {
    // 5. 获取userstore的token值
    const userStore = useUserStore()
    // 6. 判断token是否存在 并且 请求头有效
    if (userStore.token && config.headers) {
      // 7. 如果存在  则设置请求头
      config.headers.Authorization = `Bearer ${userStore.token}`
    }

    return config
  },
  (error) => {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)

request.interceptors.response.use(
  (response) => {
    // 处理响应数据
    if (response.data.code !== 666) {
      Toast.fail('响应码错误')
      // 返回响应数据，即使code不是666
      return response;
    }

    return response;
  },
  (error) => {
    return Promise.reject(error)
  }
)


// 创建一个通用的请求工具函数
function rq(url: string, method: 'get' | 'post' = 'get', paramsOrData: any = {}) {
  // 确保method是正确的类型
  method = method.toLowerCase() as 'get' | 'post';

  // 根据method判断使用params还是data
  const config = {
    url,
    method,
    ...(method === 'get' ? { params: paramsOrData } : { data: paramsOrData }),
  };

  // 添加调试信息
  // console.log('Request config:', config);

  return request(config).then((response) => {
    // 输出响应信息
    // console.log('Response from server:', response);
    return response;
  });
}

export { rq };
